O paradigma funcional muda o modelo mental do desenvolvedor de "atualizar uma caixa com estado" para aplicar transformações matemáticas a valores imutáveis. No Elixir, os dados nunca são alterados; eles apenas renascem em novas formas.
1. A Afirmação Matemática
Quando você escreve $x = a + 1$, você não está atribuindo um resultado a uma variável. Em vez disso, você está simplesmente afirmando que as expressões $x$ e $a + 1$ têm o mesmo valor. Isso reflete a lógica algébrica onde $x$ representa um valor fixo em um contexto específico.
2. Imutabilidade como Garantia
No Elixir, todos os valores são imutáveis. Os dados não podem ser alterados após sua criação. Isso elimina os "efeitos colaterais" onde uma função poderia mudar inesperadamente uma variável global ou um objeto passado, garantindo que o código seja previsível e seguro em múltiplas threads.
3. Transformação versus Mutação
Nunca modificamos dados in loco. O Elixir não tem atribuição; ao invés disso, ele tenta corresponder valores a padrões. Para "mudar" um valor, passamos os dados originais por uma função para produzir uma versão completamente nova.
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir" (Ainda intocado!)